package com.mapas;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;

public class main extends MapActivity 
{
	MapController mapController;
	int zoom=7;	
	dibujo miDibujoMercado;
	dibujoPos miDibujoPos;
	dibujoLinea miDibujoLinea;
	private Location location;
	
	MapView mapView;
	TextView tw_zoom;
	
	
	//linea
	private List<Overlay> mapOverlays;
	private Projection projection;  
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);     
        
      //levantamos los componentes XML
		tw_zoom=(TextView)findViewById(R.id.tw_zoom);        
		mapView= (MapView)findViewById(R.id.map_view);
		//establecemos las vistas del mapa
		mapView.setSatellite(true);
		mapView.setStreetView(true);
		mapView.setTraffic(true);
		
		
		//linea
		 mapOverlays = mapView.getOverlays();        
		 projection = mapView.getProjection();
		 
		 Log.d("SocialApi","cantidad: "+String.valueOf(mapOverlays.size()));
		
		
		//obtengo el controlador de mi mapa		
		mapController = mapView.getController();	
		
        //servicio de locacion
        String serviceString = Context.LOCATION_SERVICE;
        //el location manager hace todo, lo instancio pasandole el nombre del servico de locacion        
        LocationManager locationManager = (LocationManager)getSystemService(serviceString);        
        //eligo mi proovedor de datos
        String proovedor = LocationManager.GPS_PROVIDER;
        //si quiero que actualizce mi posicion        
        locationManager.getLastKnownLocation(proovedor);
        locationManager.requestLocationUpdates(proovedor, 5000, 5, new LocationListener() 
        {		
		

			@Override
			public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onProviderEnabled(String arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onProviderDisabled(String arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onLocationChanged(Location Location) 
			{
				location=Location;
				posicion();
				
			}
		});
        //botones de zoom        
        Button btn_mas=(Button)findViewById(R.id.button1);
        Button btn_menos=(Button)findViewById(R.id.button2);
        btn_mas.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) 
			{
				zoom++;					
				dibujar();
				dibujarLinea();
			}
		});
        btn_menos.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) 
			{
				zoom--;			
				dibujar();
				dibujarLinea();
			}
		});
       
       posicion();
       dibujar();
    }


	@Override
	protected boolean isRouteDisplayed() {
		// TODO Auto-generated method stub
		return false;
	}
	
	private ArrayList<oMercado> lista_ubicaciones()
	{
		ArrayList<oMercado> mercados=new ArrayList<oMercado>();
		oMercado oMercado1=new oMercado();
			oMercado1.setNombre("Carrefour");
			oMercado1.setLatitud(-37.999832*1E6);
			oMercado1.setLongitud(-57.546988*1E6);
			oMercado1.setIcono(BitmapFactory.decodeResource(getResources(), R.drawable.carre));
		oMercado oMercado2=new oMercado();
			oMercado2.setNombre("Disco");
			oMercado2.setLatitud(-38.001337*1E6);
			oMercado2.setLongitud(-57.549798*1E6);
			oMercado2.setIcono(BitmapFactory.decodeResource(getResources(), R.drawable.disco));
		mercados.add(oMercado1);
		mercados.add(oMercado2);
		return mercados;		
	}
	

	
	private void dibujar()
	{
		tw_zoom.setText("Zoom: "+zoom);
		mapController.setZoom(zoom);
		
		miDibujoMercado=new dibujo();
		
		List<Overlay> dibujos=mapView.getOverlays();
		dibujos.clear();
		if (zoom>=14)
					{
						dibujos.add(miDibujoMercado);
						miDibujoMercado.mercados=lista_ubicaciones();
						miDibujoPos=new dibujoPos();						
						dibujos.add(miDibujoPos);
						miDibujoPos.location=location;
						Toast.makeText(getApplicationContext(), "Mercados visibles", Toast.LENGTH_SHORT).show();			
					}
		
		
	}
	
	private void dibujarLinea()
	{
		
		
		miDibujoLinea=new dibujoLinea(projection);
		
		List<Overlay> dibujos=mapView.getOverlays();
		//dibujos.clear();
		if (zoom>=14)
					{
						dibujos.add(miDibujoLinea);
						
									
					}
		
		
	}
	
	
	
	private void posicion()
	{
		if (location!=null)
		{
			Double lat = location.getLatitude()*1E6;
			Double lng = location.getLongitude()*1E6;
			TextView tw_mensaje=(TextView)findViewById(R.id.tw_mensaje);
			tw_mensaje.setText("Latitud: "+location.getLatitude()+"; Longitud: "+location.getLongitude());
			GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());
			mapController.setCenter(point);
			mapController.setZoom(zoom);		
			//dibujo mi posic
//			miDibujoPos=new dibujoPos();
//			List<Overlay> dibujos=mapView.getOverlays();
//			dibujos.add(miDibujoPos);
//			miDibujoPos.location=location;
		}
	}
	
		
}